home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Visual Database / Visual dBase v5.5 / SAMPLES1.PAK / CUSTORD.WFM < prev    next >
Text File  |  1995-07-18  |  49KB  |  1,667 lines

  1. **********************************************************************************
  2. *  PROGRAM:      Custord.wfm
  3. *
  4. *  WRITTEN BY:   Borland Samples Group
  5. *
  6. *  DATE:         1/95
  7. *
  8. *  UPDATED:      6/95
  9. *
  10. *  REVISION:     $Revision:   1.23  $
  11. *
  12. *  VERSION:      Visual dBASE
  13. *
  14. *  DESCRIPTION:  This program displays information about the customers, orders
  15. *                and order lineitems of the Dive Shop company.
  16. *
  17. *  PARAMETERS:   None
  18. *
  19. *  CALLS:        Customer.mnu         (Customer page Menu file)
  20. *                Orders.mnu           (Orders page Menu file)
  21. *                Lineitem.mnu         (Lineitems page Menu file)
  22. *                Buttons.cc           (Custom Controls file)
  23. *                Custord.qbe          (View of tables)
  24. *
  25. *  USAGE:        DO Custord.wfm       && Note that you can also DO Orders.wfm
  26. *
  27. *******************************************************************************
  28. #include <Messdlg.h>
  29.  
  30. #define MAX_VIEWS       3
  31. #define CUSTOMER_VIEW   1
  32. #define ORDERS_VIEW     2
  33. #define LINEITEMS_VIEW  3
  34. #define PAGE_OF_RECORDS 5
  35.  
  36. shell(.F.,.T.)
  37. create session
  38. set talk off
  39. set ldCheck off                        && To avoid language driver conflicts
  40.  
  41.  
  42. ** END HEADER -- do not remove this line*
  43. * Generated on 07/11/95
  44. *
  45. parameter bModal
  46. local f
  47. f = new CUSTORDFORM()
  48. if (bModal)
  49.    f.mdi = .F. && ensure not MDI
  50.    f.ReadModal()
  51. else
  52.    f.Open()
  53. endif
  54. CLASS CUSTORDFORM OF FORM
  55.    Set Procedure To &_dbwinhome.samples\BUTTONS.CC additive
  56.    this.Width = 80
  57.    this.MenuFile = "CUSTOMER.MNU"
  58.    this.View = "CUSTORD.QBE"
  59.    this.OnClose = CLASS::FORM_ONCLOSE
  60.    this.EscExit = .F.
  61.    this.Top = 0
  62.    this.StatusMessage = "Right click for an edit popup menu."
  63.    this.MousePointer = 1
  64.    this.Left = 0
  65.    this.Text = "Customer -- View Mode"
  66.    this.Height = 19.2344
  67.    this.CanNavigate = CLASS::FORM_CANNAVIGATE
  68.    this.Maximize = .F.
  69.    this.Minimize = .F.
  70.    this.Icon = "File CUSTORD.ICO"
  71.    this.PageNo = 1
  72.  
  73.    DEFINE RECTANGLE ALLRECT OF THIS;
  74.        PROPERTY;
  75.          Width 79.166,;
  76.          Top 1.5977,;
  77.          Left 0.5,;
  78.          ColorNormal "R/BtnFace",;
  79.          Text "Customer: ",;
  80.          Height 13.8135,;
  81.          PageNo 0
  82.  
  83.    DEFINE TEXT NAMETEXT OF THIS;
  84.        PROPERTY;
  85.          Width 10.833,;
  86.          Top 2.293,;
  87.          Left 1,;
  88.          ColorNormal "B/BtnFace",;
  89.          Text "N&ame:",;
  90.          Height 1.001,;
  91.          Alignment 5
  92.  
  93.    DEFINE ENTRYFIELD NAMEENTRY OF THIS;
  94.        PROPERTY;
  95.          Width 54,;
  96.          Top 2.293,;
  97.          Left 12.5,;
  98.          ColorNormal "W+/BtnFace",;
  99.          Height 1.001,;
  100.          Enabled .F.,;
  101.          DataLink "CUSTOMER->NAME",;
  102.          ColorHighLight "B+/W*",;
  103.          OnChange CLASS::CHANGESMADE
  104.  
  105.    DEFINE TEXT CUSTNOTEXT OF THIS;
  106.        PROPERTY;
  107.          Width 11.502,;
  108.          Top 3.7051,;
  109.          Left 67.3311,;
  110.          ColorNormal "B/BtnFace",;
  111.          Text "Customer #:",;
  112.          Height 1,;
  113.          Alignment 3
  114.  
  115.    DEFINE ENTRYFIELD CUSTNOENTRY OF THIS;
  116.        PROPERTY;
  117.          Width 11.002,;
  118.          Top 4.8809,;
  119.          Left 67.3311,;
  120.          ColorNormal "W+/BtnFace",;
  121.          Height 1.001,;
  122.          Enabled .F.,;
  123.          DataLink "CUSTOMER->CUSTOMER_N",;
  124.          ColorHighLight "B+/W*",;
  125.          OnChange CLASS::CHANGESMADE
  126.  
  127.    DEFINE TEXT STREETTEXT OF THIS;
  128.        PROPERTY;
  129.          Width 10.833,;
  130.          Top 4.2979,;
  131.          Left 1,;
  132.          ColorNormal "B/BtnFace",;
  133.          Text "&Street:",;
  134.          Height 0.9961,;
  135.          Alignment 5
  136.  
  137.    DEFINE ENTRYFIELD STREETENTRY OF THIS;
  138.        PROPERTY;
  139.          Width 54,;
  140.          Top 4.2979,;
  141.          Left 12.5,;
  142.          ColorNormal "N/BtnFace",;
  143.          Height 0.9961,;
  144.          Enabled .F.,;
  145.          DataLink "CUSTOMER->STREET",;
  146.          ColorHighLight "B+/W*",;
  147.          OnChange CLASS::CHANGESMADE
  148.  
  149.    DEFINE TEXT CITYTEXT OF THIS;
  150.        PROPERTY;
  151.          Width 10.833,;
  152.          Top 5.3975,;
  153.          Left 1,;
  154.          ColorNormal "B/BtnFace",;
  155.          Text "Cit&y:",;
  156.          Height 1.0137,;
  157.          Alignment 5
  158.  
  159.    DEFINE ENTRYFIELD CITYENTRY OF THIS;
  160.        PROPERTY;
  161.          Width 22.333,;
  162.          Top 5.3975,;
  163.          Left 12.5,;
  164.          ColorNormal "N/BtnFace",;
  165.          Height 1.0137,;
  166.          Enabled .F.,;
  167.          DataLink "CUSTOMER->CITY",;
  168.          ColorHighLight "B+/W*",;
  169.          OnChange CLASS::CHANGESMADE
  170.  
  171.    DEFINE TEXT STATETEXT OF THIS;
  172.        PROPERTY;
  173.          Width 16.166,;
  174.          Top 5.3975,;
  175.          Left 35.5,;
  176.          ColorNormal "B/BtnFace",;
  177.          Text "State/Pro&vince:",;
  178.          Height 1.0137,;
  179.          Alignment 5
  180.  
  181.    DEFINE ENTRYFIELD STATEENTRY OF THIS;
  182.        PROPERTY;
  183.          Width 14.1689,;
  184.          Top 5.3975,;
  185.          Left 52.3311,;
  186.          ColorNormal "N/BtnFace",;
  187.          Height 1.0137,;
  188.          Enabled .F.,;
  189.          DataLink "CUSTOMER->STATE_PROV",;
  190.          ColorHighLight "B+/W*",;
  191.          OnChange CLASS::CHANGESMADE
  192.  
  193.    DEFINE TEXT ZIPTEXT OF THIS;
  194.        PROPERTY;
  195.          Width 10.833,;
  196.          Top 6.5,;
  197.          Left 1,;
  198.          ColorNormal "B/BtnFace",;
  199.          Text "&Zip Code:",;
  200.          Height 1.0293,;
  201.          Alignment 5
  202.  
  203.    DEFINE ENTRYFIELD ZIPENTRY OF THIS;
  204.        PROPERTY;
  205.          Width 22.333,;
  206.          Top 6.5,;
  207.          Left 12.5,;
  208.          ColorNormal "N/BtnFace",;
  209.          Height 1.0293,;
  210.          Enabled .F.,;
  211.          DataLink "CUSTOMER->ZIP_POSTAL",;
  212.          ColorHighLight "B+/W*",;
  213.          OnChange CLASS::CHANGESMADE
  214.  
  215.    DEFINE TEXT COUNTRYTEXT OF THIS;
  216.        PROPERTY;
  217.          Width 14.835,;
  218.          Top 6.5,;
  219.          Left 36.8311,;
  220.          ColorNormal "B/BtnFace",;
  221.          Text "Count&ry:",;
  222.          Height 1.0293,;
  223.          Alignment 5
  224.  
  225.    DEFINE ENTRYFIELD COUNTRYENTRY OF THIS;
  226.        PROPERTY;
  227.          Width 14.1689,;
  228.          Top 6.5,;
  229.          Left 52.3311,;
  230.          ColorNormal "N/BtnFace",;
  231.          Height 1.0293,;
  232.          Enabled .F.,;
  233.          DataLink "CUSTOMER->COUNTRY",;
  234.          ColorHighLight "B+/W*",;
  235.          OnChange CLASS::CHANGESMADE
  236.  
  237.    DEFINE TEXT PHONETEXT OF THIS;
  238.        PROPERTY;
  239.          Width 10.833,;
  240.          Top 7.6475,;
  241.          Left 1,;
  242.          ColorNormal "B/BtnFace",;
  243.          Text "P&hone:",;
  244.          Height 0.998,;
  245.          Alignment 5
  246.  
  247.    DEFINE ENTRYFIELD PHONEENTRY OF THIS;
  248.        PROPERTY;
  249.          Width 22.333,;
  250.          Top 7.6475,;
  251.          Left 12.5,;
  252.          ColorNormal "N/BtnFace",;
  253.          Height 0.998,;
  254.          Enabled .F.,;
  255.          DataLink "CUSTOMER->PHONE",;
  256.          ColorHighLight "B+/W*",;
  257.          OnChange CLASS::CHANGESMADE
  258.  
  259.    DEFINE TEXT SIGNATURETEXT OF THIS;
  260.        PROPERTY;
  261.          Width 20.333,;
  262.          Top 10.0586,;
  263.          Left 52.5,;
  264.          ColorNormal "B/BtnFace",;
  265.          Text "Signature:",;
  266.          Height 1,;
  267.          Alignment 3
  268.  
  269.    DEFINE IMAGE SIGNATUREIMAGE OF THIS;
  270.        PROPERTY;
  271.          Width 26,;
  272.          Top 11.1758,;
  273.          Left 52.5,;
  274.          Height 2.7061,;
  275.          DataSource "BINARY CUSTOMER->SIGNATURE"
  276.  
  277.    DEFINE TEXT NOTESTEXT OF THIS;
  278.        PROPERTY;
  279.          Width 10.833,;
  280.          Top 10.0586,;
  281.          Left 1,;
  282.          ColorNormal "B/BtnFace",;
  283.          Text "No&tes:",;
  284.          Height 1,;
  285.          Alignment 5
  286.  
  287.    DEFINE EDITOR NOTESEDITOR OF THIS;
  288.        PROPERTY;
  289.          OnGotFocus {;if this.Modify;this.colorNormal = "B+/W*";endif},;
  290.          Width 37.166,;
  291.          OnLostFocus {;if this.Modify;this.colorNormal = "N/BtnFace";endif},;
  292.          Top 10.293,;
  293.          Left 12.5,;
  294.          CUATab .T.,;
  295.          ColorNormal "N/BtnFace",;
  296.          Height 4.2354,;
  297.          Modify .F.,;
  298.          DataLink "CUSTOMER->NOTES",;
  299.          OnChange CLASS::CHANGESMADE
  300.  
  301.    DEFINE IMAGE LOGOIMAGE OF THIS;
  302.        PROPERTY;
  303.          Width 14.832,;
  304.          Top 15.5,;
  305.          Left 65.668,;
  306.          Height 2.8516,;
  307.          DataSource "FILENAME DIVESHOP.BMP",;
  308.          PageNo 0,;
  309.          Alignment 1
  310.  
  311.    DEFINE RECTANGLE PAYMENTRECT OF THIS;
  312.        PROPERTY;
  313.          Width 35,;
  314.          Top 5.5879,;
  315.          Left 1.5,;
  316.          Text "Totals",;
  317.          Height 6.0586,;
  318.          PageNo 2
  319.  
  320.    DEFINE RECTANGLE SHIPRECT OF THIS;
  321.        PROPERTY;
  322.          Width 77,;
  323.          Top 11.8223,;
  324.          Left 1.5,;
  325.          Text "Ship Info",;
  326.          Height 3.1768,;
  327.          PageNo 2
  328.  
  329.    DEFINE TEXT ORDERNOTEXT OF THIS;
  330.        PROPERTY;
  331.          Width 10,;
  332.          Top 2.5,;
  333.          Left 3,;
  334.          ColorNormal "B/BtnFace",;
  335.          Text "Order No:",;
  336.          Height 1.2637,;
  337.          PageNo 2,;
  338.          Alignment 5
  339.  
  340.    DEFINE ENTRYFIELD ORDERNOENTRY OF THIS;
  341.        PROPERTY;
  342.          Width 6.833,;
  343.          Top 2.5,;
  344.          Left 13.5,;
  345.          ColorNormal "W+/BtnFace",;
  346.          Height 1.0293,;
  347.          Enabled .F.,;
  348.          DataLink "ORDERS->ORDER_NO",;
  349.          OnChange CLASS::CHANGESMADE,;
  350.          PageNo 2
  351.  
  352.    DEFINE TEXT CUSTOMERNOTEXT OF THIS;
  353.        PROPERTY;
  354.          Width 13.166,;
  355.          Top 2.5,;
  356.          Left 28.5,;
  357.          ColorNormal "B/BtnFace",;
  358.          Text "Customer No:",;
  359.          Height 1.2637,;
  360.          PageNo 2,;
  361.          Alignment 5
  362.  
  363.    DEFINE ENTRYFIELD ORDCUSTNOENTRY OF THIS;
  364.        PROPERTY;
  365.          Width 6,;
  366.          Top 2.5,;
  367.          Left 42.166,;
  368.          ColorNormal "N/BtnFace",;
  369.          Height 1.0293,;
  370.          Enabled .F.,;
  371.          DataLink "ORDERS->CUSTOMER_N",;
  372.          OnChange CLASS::CHANGESMADE,;
  373.          PageNo 2
  374.  
  375.    DEFINE TEXT SALEDATETEXT OF THIS;
  376.        PROPERTY;
  377.          Width 10.002,;
  378.          Top 2.5,;
  379.          Left 50.3311,;
  380.          ColorNormal "B/BtnFace",;
  381.          Text "&Sale Date:",;
  382.          Height 1.2637,;
  383.          PageNo 2,;
  384.          Alignment 5
  385.  
  386.    DEFINE SPINBOX SALEDATESPIN OF THIS;
  387.        PROPERTY;
  388.          Rangemax {09/05/95},;
  389.          Width 17.333,;
  390.          Rangemin {05/28/95},;
  391.          Top 2.5,;
  392.          Left 61,;
  393.          ColorNormal "N/BtnFace",;
  394.          Height 1.0293,;
  395.          Enabled .F.,;
  396.          DataLink "ORDERS->SALE_DATE",;
  397.          OnChange CLASS::CHANGESMADE,;
  398.          PageNo 2
  399.  
  400.    DEFINE BROWSE LINEITEMSBROWSE OF THIS;
  401.        PROPERTY;
  402.          Width 71.333,;
  403.          Fields "LINEITEM->STOCK_NO\13,LINEITEM->QTY\14,LINEITEM->SELL_PRICE\16,TOTAL = LINEITEM->SELL_PRICE*LINEITEM->QTY\16",;
  404.          Top 2.4688,;
  405.          Left 5,;
  406.          CUATab .T.,;
  407.          ColorNormal "B/BtnFace",;
  408.          Toggle .F.,;
  409.          Height 12.001,;
  410.          Modify .F.,;
  411.          ShowRecNo .F.,;
  412.          Alias "Lineitem",;
  413.          OnChange CLASS::LINEITEMBROWSECHANGESMADE,;
  414.          ShowDeleted .F.,;
  415.          Delete .F.,;
  416.          Append .F.,;
  417.          PageNo 3
  418.  
  419.    DEFINE TEXT TOTINVTEXT OF THIS;
  420.        PROPERTY;
  421.          Width 13.6689,;
  422.          Top 6.6465,;
  423.          Left 3.6641,;
  424.          ColorNormal "B/BtnFace",;
  425.          Text "Total Invoice:",;
  426.          Height 1.0586,;
  427.          PageNo 2,;
  428.          Alignment 8
  429.  
  430.    DEFINE ENTRYFIELD TOTINVENTRY OF THIS;
  431.        PROPERTY;
  432.          Width 17,;
  433.          Top 6.6465,;
  434.          Left 18,;
  435.          ColorNormal "N/BtnFace",;
  436.          Function "J",;
  437.          Height 1,;
  438.          Enabled .F.,;
  439.          DataLink "ORDERS->TOTAL",;
  440.          Picture "9,999,999.99",;
  441.          PageNo 2
  442.  
  443.    DEFINE TEXT TOTPAIDTEXT OF THIS;
  444.        PROPERTY;
  445.          Width 13.1689,;
  446.          Top 8.1172,;
  447.          Left 3.6641,;
  448.          ColorNormal "B/BtnFace",;
  449.          Text "A&mount Paid:",;
  450.          Height 1,;
  451.          PageNo 2,;
  452.          Alignment 8
  453.  
  454.    DEFINE ENTRYFIELD AMTPAIDENTRY OF THIS;
  455.        PROPERTY;
  456.          Width 17,;
  457.          Top 8.1172,;
  458.          Left 18,;
  459.          ColorNormal "N/BtnFace",;
  460.          Function "J",;
  461.          Height 1,;
  462.          Enabled .F.,;
  463.          DataLink "ORDERS->AMT_PAID",;
  464.          OnChange CLASS::AMTPAIDONCHANGE,;
  465.          Picture "9,999,999.99",;
  466.          PageNo 2
  467.  
  468.    DEFINE TEXT BALDUETEXT OF THIS;
  469.        PROPERTY;
  470.          Width 13.1689,;
  471.          Top 9.6465,;
  472.          Left 3.6641,;
  473.          ColorNormal "B/BtnFace",;
  474.          Text "Balance Due:",;
  475.          Height 1,;
  476.          PageNo 2,;
  477.          Alignment 8
  478.  
  479.    DEFINE ENTRYFIELD BALDUEENTRY OF THIS;
  480.        PROPERTY;
  481.          Width 17,;
  482.          Top 9.6465,;
  483.          Left 18,;
  484.          ColorNormal "N/BtnFace",;
  485.          Function "J",;
  486.          Height 1,;
  487.          Enabled .F.,;
  488.          Value 0,;
  489.          Picture "9,999,999.99",;
  490.          PageNo 2
  491.  
  492.    DEFINE RECTANGLE TERMSRECT OF THIS;
  493.        PROPERTY;
  494.          Width 16.1357,;
  495.          Top 5.5879,;
  496.          Left 40.1973,;
  497.          Text "&Terms",;
  498.          Height 6.0586,;
  499.          PageNo 2
  500.  
  501.    DEFINE RADIOBUTTON TERMSFOB OF THIS;
  502.        PROPERTY;
  503.          Width 12.833,;
  504.          Group .T.,;
  505.          Top 6.4092,;
  506.          Left 41,;
  507.          ColorNormal "N/BtnFace",;
  508.          Text "FOB",;
  509.          Height 0.7656,;
  510.          Enabled .F.,;
  511.          DataLink "ORDERS->TERMS",;
  512.          OnChange CLASS::CHANGESMADE,;
  513.          PageNo 2
  514.  
  515.    DEFINE RADIOBUTTON TERMSNET30 OF THIS;
  516.        PROPERTY;
  517.          Width 12.833,;
  518.          Group .F.,;
  519.          Top 7.3975,;
  520.          Left 41,;
  521.          ColorNormal "N/BtnFace",;
  522.          Text "Net 30",;
  523.          Height 0.7773,;
  524.          Enabled .F.,;
  525.          DataLink "ORDERS->TERMS",;
  526.          OnChange CLASS::CHANGESMADE,;
  527.          PageNo 2
  528.  
  529.    DEFINE RECTANGLE PAYMETHODRECT OF THIS;
  530.        PROPERTY;
  531.          Width 18.5,;
  532.          Top 5.5879,;
  533.          Left 60,;
  534.          Text "Pa&yment Method",;
  535.          Height 6.0586,;
  536.          PageNo 2
  537.  
  538.    DEFINE RADIOBUTTON PAYCHECK OF THIS;
  539.        PROPERTY;
  540.          Width 12,;
  541.          Group .T.,;
  542.          Top 6.4102,;
  543.          Left 61,;
  544.          ColorNormal "N/BtnFace",;
  545.          Text "Check",;
  546.          Height 0.7646,;
  547.          Enabled .F.,;
  548.          DataLink "ORDERS->PAY_METHOD",;
  549.          OnChange CLASS::CHANGESMADE,;
  550.          PageNo 2,;
  551.          ID 1
  552.  
  553.    DEFINE RADIOBUTTON PAYCREDIT OF THIS;
  554.        PROPERTY;
  555.          Width 12,;
  556.          Group .F.,;
  557.          Top 7.3975,;
  558.          Left 61,;
  559.          ColorNormal "N/BtnFace",;
  560.          Text "Credit",;
  561.          Height 0.7773,;
  562.          Enabled .F.,;
  563.          DataLink "ORDERS->PAY_METHOD",;
  564.          OnChange CLASS::CHANGESMADE,;
  565.          PageNo 2,;
  566.          ID 1
  567.  
  568.    DEFINE RADIOBUTTON PAYMC OF THIS;
  569.        PROPERTY;
  570.          Width 12,;
  571.          Group .F.,;
  572.          Top 8.3975,;
  573.          Left 61,;
  574.          ColorNormal "N/BtnFace",;
  575.          Text "MC",;
  576.          Height 0.7773,;
  577.          Enabled .F.,;
  578.          DataLink "ORDERS->PAY_METHOD",;
  579.          OnChange CLASS::CHANGESMADE,;
  580.          PageNo 2
  581.  
  582.    DEFINE RADIOBUTTON PAYCASH OF THIS;
  583.        PROPERTY;
  584.          Width 12,;
  585.          Group .F.,;
  586.          Top 9.293,;
  587.          Left 61,;
  588.          ColorNormal "N/BtnFace",;
  589.          Text "Cash",;
  590.          Height 0.7646,;
  591.          Enabled .F.,;
  592.          DataLink "ORDERS->PAY_METHOD",;
  593.          OnChange CLASS::CHANGESMADE,;
  594.          PageNo 2
  595.  
  596.    DEFINE RADIOBUTTON PAYVISA OF THIS;
  597.        PROPERTY;
  598.          Width 12,;
  599.          Group .F.,;
  600.          Top 10.3516,;
  601.          Left 61,;
  602.          ColorNormal "N/BtnFace",;
  603.          Text "Visa",;
  604.          Height 0.7646,;
  605.          Enabled .F.,;
  606.          DataLink "ORDERS->PAY_METHOD",;
  607.          OnChange CLASS::CHANGESMADE,;
  608.          PageNo 2
  609.  
  610.    DEFINE TEXT SHIPDATETEXT OF THIS;
  611.        PROPERTY;
  612.          Width 12.835,;
  613.          Top 12.7637,;
  614.          Left 1.8311,;
  615.          ColorNormal "B/BtnFace",;
  616.          Text "S&hip Date:",;
  617.          Height 0.7061,;
  618.          PageNo 2,;
  619.          Alignment 5
  620.  
  621.    DEFINE SPINBOX SHIPDATESPIN OF THIS;
  622.        PROPERTY;
  623.          Rangemax {09/12/95},;
  624.          Width 17.333,;
  625.          Rangemin {06/04/95},;
  626.          Top 12.4102,;
  627.          Left 18,;
  628.          ColorNormal "N/BtnFace",;
  629.          Height 1.001,;
  630.          Enabled .F.,;
  631.          DataLink "ORDERS->SHIP_DATE",;
  632.          OnChange CLASS::CHANGESMADE,;
  633.          PageNo 2
  634.  
  635.    DEFINE TEXT SHIPVIATEXT OF THIS;
  636.        PROPERTY;
  637.          Width 11.335,;
  638.          Top 14,;
  639.          Left 3.3311,;
  640.          ColorNormal "B/BtnFace",;
  641.          Text "Ship &Via:",;
  642.          Height 0.8223,;
  643.          PageNo 2,;
  644.          Alignment 5
  645.  
  646.    DEFINE RADIOBUTTON SHIPDHL OF THIS;
  647.        PROPERTY;
  648.          Width 10.1689,;
  649.          Group .T.,;
  650.          Top 14,;
  651.          Left 17.8311,;
  652.          ColorNormal "N/BtnFace",;
  653.          Text "DHL",;
  654.          Height 0.8223,;
  655.          Enabled .F.,;
  656.          DataLink "ORDERS->SHIP_VIA",;
  657.          OnChange CLASS::CHANGESMADE,;
  658.          PageNo 2
  659.  
  660.    DEFINE RADIOBUTTON SHIPEMERY OF THIS;
  661.        PROPERTY;
  662.          Width 10.1689,;
  663.          Group .F.,;
  664.          Top 14,;
  665.          Left 28.8311,;
  666.          ColorNormal "N/BtnFace",;
  667.          Text "Emery",;
  668.          Height 0.8223,;
  669.          Enabled .F.,;
  670.          DataLink "ORDERS->SHIP_VIA",;
  671.          OnChange CLASS::CHANGESMADE,;
  672.          PageNo 2
  673.  
  674.    DEFINE RADIOBUTTON SHIPFEDEX OF THIS;
  675.        PROPERTY;
  676.          Width 10.1689,;
  677.          Group .F.,;
  678.          Top 14,;
  679.          Left 41.1641,;
  680.          ColorNormal "N/BtnFace",;
  681.          Text "FedEx",;
  682.          Height 0.8223,;
  683.          Enabled .F.,;
  684.          DataLink "ORDERS->SHIP_VIA",;
  685.          OnChange CLASS::CHANGESMADE,;
  686.          PageNo 2
  687.  
  688.    DEFINE RADIOBUTTON SHIPUPS OF THIS;
  689.        PROPERTY;
  690.          Width 10.1689,;
  691.          Group .F.,;
  692.          Top 14,;
  693.          Left 54.1641,;
  694.          ColorNormal "N/BtnFace",;
  695.          Text "UPS",;
  696.          Height 0.8223,;
  697.          Enabled .F.,;
  698.          DataLink "ORDERS->SHIP_VIA",;
  699.          OnChange CLASS::CHANGESMADE,;
  700.          PageNo 2
  701.  
  702.    DEFINE RADIOBUTTON SHIPUSMAIL OF THIS;
  703.        PROPERTY;
  704.          Width 9.833,;
  705.          Group .F.,;
  706.          Top 14,;
  707.          Left 65,;
  708.          ColorNormal "N/BtnFace",;
  709.          Text "US Mail",;
  710.          Height 0.8223,;
  711.          Enabled .F.,;
  712.          DataLink "ORDERS->SHIP_VIA",;
  713.          OnChange CLASS::CHANGESMADE,;
  714.          PageNo 2
  715.  
  716.    DEFINE TABBOX PAGETABBOX OF THIS;
  717.        PROPERTY;
  718.          Width 80,;
  719.          Top 18.1758,;
  720.          Height 1.0586,;
  721.          ColorHighLight "BtnText/BtnFace",;
  722.          OnSelChange CLASS::PAGETABBOX_ONSELCHANGE,;
  723.          DataSource "Array {'Customers','Orders', 'Line Items'}",;
  724.          ID 167
  725.  
  726.    DEFINE RECTANGLE SPEEDBARRECT OF THIS;
  727.        PROPERTY;
  728.          Width 80,;
  729.          Text "",;
  730.          Height 1.5879,;
  731.          BorderStyle 1,;
  732.          PageNo 0
  733.  
  734.    DEFINE BROWSE CUSTOMERBROWSE OF THIS;
  735.        PROPERTY;
  736.          Width 77.0684,;
  737.          Top 2.5977,;
  738.          Left 1.5977,;
  739.          CUATab .T.,;
  740.          Toggle .F.,;
  741.          Height 11.9893,;
  742.          Alias "Customer",;
  743.          PageNo 10
  744.  
  745.    DEFINE BROWSE ORDERSBROWSE OF THIS;
  746.        PROPERTY;
  747.          Width 76.5684,;
  748.          Top 2.5977,;
  749.          Left 1.5977,;
  750.          CUATab .T.,;
  751.          Height 11.9893,;
  752.          Alias "Orders",;
  753.          PageNo 20
  754.  
  755.    DEFINE PUSHBUTTON BROWSESPEEDBUTTON OF THIS;
  756.        PROPERTY;
  757.          Width 4,;
  758.          UpBitmap "RESOURCE #610",;
  759.          Group .T.,;
  760.          Top 0.0977,;
  761.          Left 22,;
  762.          Text "",;
  763.          Height 1.4307,;
  764.          OnClick CLASS::BROWSESPEEDBUTTON_ONCLICK,;
  765.          SpeedBar .T.,;
  766.          PageNo 0
  767.  
  768.    DEFINE PUSHBUTTON SEARCHSPEEDBUTTON OF THIS;
  769.        PROPERTY;
  770.          Width 4,;
  771.          UpBitmap "RESOURCE #858",;
  772.          Group .T.,;
  773.          Top 0.0977,;
  774.          Left 26,;
  775.          Text "",;
  776.          Height 1.4307,;
  777.          OnClick CLASS::SEARCHSPEEDBUTTON_ONCLICK,;
  778.          SpeedBar .T.,;
  779.          PageNo 0
  780.  
  781.    DEFINE PUSHBUTTON VCRFIRSTBUTTON OF THIS;
  782.        PROPERTY;
  783.          Width 4,;
  784.          UpBitmap "RESOURCE #851",;
  785.          Group .T.,;
  786.          Top 0.0889,;
  787.          Left 40,;
  788.          Text "",;
  789.          Height 1.4395,;
  790.          OnClick CLASS::VCRFIRSTBUTTON_ONCLICK,;
  791.          SpeedTip "First Record",;
  792.          SpeedBar .T.,;
  793.          PageNo 0
  794.  
  795.    DEFINE PUSHBUTTON VCRPREVPAGEBUTTON OF THIS;
  796.        PROPERTY;
  797.          Width 4,;
  798.          UpBitmap "RESOURCE #852",;
  799.          Group .T.,;
  800.          Top 0.0889,;
  801.          Left 44,;
  802.          Text "",;
  803.          Height 1.4395,;
  804.          OnClick CLASS::VCRPREVPAGEBUTTON_ONCLICK,;
  805.          SpeedTip "Previous Page",;
  806.          SpeedBar .T.,;
  807.          PageNo 0
  808.  
  809.    DEFINE PUSHBUTTON VCRPREVBUTTON OF THIS;
  810.        PROPERTY;
  811.          Width 4,;
  812.          UpBitmap "RESOURCE #853",;
  813.          Group .T.,;
  814.          Top 0.0889,;
  815.          Left 48,;
  816.          Text "",;
  817.          Height 1.4395,;
  818.          OnClick CLASS::VCRPREVBUTTON_ONCLICK,;
  819.          SpeedTip "Previous Record",;
  820.          SpeedBar .T.,;
  821.          PageNo 0
  822.  
  823.    DEFINE PUSHBUTTON VCRNEXTBUTTON OF THIS;
  824.        PROPERTY;
  825.          Width 4,;
  826.          UpBitmap "RESOURCE #854",;
  827.          Group .T.,;
  828.          Top 0.0889,;
  829.          Left 52,;
  830.          Text "",;
  831.          Height 1.4395,;
  832.          OnClick CLASS::VCRNEXTBUTTON_ONCLICK,;
  833.          SpeedTip "Next Record",;
  834.          SpeedBar .T.,;
  835.          PageNo 0
  836.  
  837.    DEFINE PUSHBUTTON VCRNEXTPAGEBUTTON OF THIS;
  838.        PROPERTY;
  839.          Width 4,;
  840.          UpBitmap "RESOURCE #855",;
  841.          Group .T.,;
  842.          Top 0.0889,;
  843.          Left 56,;
  844.          Text "",;
  845.          Height 1.4395,;
  846.          OnClick CLASS::VCRNEXTPAGEBUTTON_ONCLICK,;
  847.          SpeedTip "Next Page",;
  848.          SpeedBar .T.,;
  849.          PageNo 0
  850.  
  851.    DEFINE PUSHBUTTON VCRLASTBUTTON OF THIS;
  852.        PROPERTY;
  853.          Width 4,;
  854.          UpBitmap "RESOURCE #856",;
  855.          Group .T.,;
  856.          Top 0.0889,;
  857.          Left 60,;
  858.          Text "",;
  859.          Height 1.4395,;
  860.          OnClick CLASS::VCRLASTBUTTON_ONCLICK,;
  861.          SpeedTip "Bottom Record",;
  862.          SpeedBar .T.,;
  863.          PageNo 0
  864.  
  865.    DEFINE SAMPLEINFOBUTTON CUSTORDINFOBUTTON OF THIS;
  866.        PROPERTY;
  867.          Width 4,;
  868.          Group .T.,;
  869.          Top 0.0977,;
  870.          Left 75.5,;
  871.          Height 1.4307
  872.  
  873.    procedure Open
  874.    ****************************************************************************
  875.    private custNoField, orderNoField, stockNoField, saveAlias, tempBubble
  876.  
  877.    set skip to                        && So can skip in each workarea
  878.    set exact off                      && Customer.qbe has set exact on
  879.  
  880.    set procedure to program(1) additive         && For BubbleClass
  881.    set procedure to &_dbwinhome.samples\SampProc.prg additive
  882.    set procedure to Custord.pop additive        && Popup file
  883.  
  884.    form.popupMenu = new CustOrdPopup(form,"editPopup")
  885.  
  886.    *** Bubbles
  887.    tempBubble = new BubbleClass(form, "bubble1", 16.4473, 2, .4902, 9)
  888.    tempBubble = new BubbleClass(form, "bubble2", 16.3975, 14, .6025, 10)
  889.    tempBubble = new BubbleClass(form, "bubble3", 16.3975, 28, .665, 10)
  890.    tempBubble = new BubbleClass(form, "bubble4", 16.3477, 42, .7773, 10)
  891.    tempBubble = new BubbleClass(form, "bubble5", 16.2979, 56, .9521, 10)
  892.  
  893.  
  894.    *** Do calculations in other area, so form doesn't update on record moves
  895.  
  896.    use CUSTOMER again in select() alias temp
  897.    select temp
  898.  
  899.    custNoField = field(1)             && Field customer_n
  900.    set order to &custNoField          && Tag name is same as field name
  901.    go bottom
  902.    form.maxCustNo = &custNoField      && Max value for the key - used for
  903.                                       &&   creating new customers
  904.    use ORDERS again alias temp
  905.    orderNoField = field(1)            && order_no field
  906.    set order to &orderNoField         && order_no -- tag name is same as field
  907.    go bottom
  908.    *** !!! Should be replace with maxOrderNo
  909.    form.maxOrder = &orderNoField      && max value for key field -- for creating
  910.                                       && new orders
  911.    use LINEITEM again alias temp
  912.    stockNoField = field(2)            && stock_no field
  913.    set order to &stockNoField         && stock_no -- tag name is same as field
  914.    go bottom
  915.    form.maxStockNo = &stockNoField    && max value for key field -- for creating
  916.                                       && new line items
  917.    use in temp
  918.    select CUSTOMER
  919.  
  920.    *** Other setup work
  921.  
  922.    form.root.customer.separator3.Release()                 && Don't need this menu
  923.    form.root.customer.current_orders.Release()
  924.  
  925.    form.customerPage = new object()       &&text(form)
  926.    form.customerPage.visible = .F.
  927.    form.customerPage.pageNo = CUSTOMER_VIEW
  928.    form.customerPage.menu = form.root.customer
  929.    form.customerPage.view = CUSTOMER_VIEW
  930.    form.customerPage.inEditMode = .F.
  931.    form.customerPage.changesMade = .F.
  932.  
  933.    form.ordersPage = .F.
  934.    form.lineitemsPage = .F.
  935.  
  936.    form.curPage = form.customerPage       && For storing page info
  937.    CLASS::SaveFirstLastRecNo()            && For navigating in cur page table
  938.  
  939.    form.previousRecord = .F.              && Save record number when appending
  940.                                           && customer, can only move forward
  941.  
  942.    form.runCheckCommit = .F.              && Indicates to CanNavigate that
  943.                                           && a transaction check should be done
  944.  
  945.    form.custOrdInfoButton.sampleName = "Custord.wfm"
  946.    form.pageTabbox.SetFocus()             && Start on tabbox -- it is enabled
  947.    form::Open()                           && Now the form actually opens
  948.  
  949.    ****************************************************************************
  950.  
  951.    procedure Form_OnClose
  952.    ****************************************************************************
  953.    if form.curPage.inEditMode
  954.       form.ViewEdit()
  955.    endif
  956.  
  957.    close procedure &_dbwinhome.samples\SampProc.prg,;
  958.       &_dbwinhome.samples\Custord.pop, program(1)
  959.  
  960.    shell(.T.)
  961.  
  962.  
  963.    ****************************************************************************
  964.  
  965.    procedure Form_CanNavigate
  966.  
  967.    * Procedure executed before the record pointer is moved.  The main body
  968.    * of this routine will only be run if the runCheckCommit property is set
  969.    * to .T. -- this is to make sure that transactions aren't opened or
  970.    * closed when they shouldn't be (sometimes the record pointer is moved
  971.    * within this code, and not by explicit instructions from the form)
  972.    ****************************************************************************
  973.  
  974.    if form.runCheckCommit                       && If transactions need checking
  975.       form.runCheckCommit = .F.                 && Reset variable
  976.       CLASS::CheckCommit(form.curPage.inEditMode)       && Check transactions
  977.    endif
  978.  
  979.  
  980.    ****************************************************************************
  981.  
  982.    procedure ChangesMade
  983.  
  984.    * Indicate that changes have been made to the current record.
  985.    ****************************************************************************
  986.  
  987.    form.curPage.changesMade = .T.
  988.  
  989.  
  990.    ****************************************************************************
  991.  
  992.    procedure CheckCommit (newInEditMode)
  993.  
  994.    * Complete transaction, if it has been started.
  995.    ****************************************************************************
  996.    private orderText, orderField, changesMade, inEditMode
  997.  
  998.    changesMade = form.curPage.changesMade
  999.    inEditMode = form.curPage.inEditMode
  1000.    if changesMade .and. inEditMode
  1001.       do case
  1002.          case form.curPage.pageNo = CUSTOMER_VIEW
  1003.             orderField = field(1)
  1004.             orderText = "Customer %1"
  1005.          case form.curPage.pageNo = ORDERS_VIEW
  1006.             orderField = field(1)
  1007.             orderText = "Order %1"
  1008.          case form.curPage.pageNo = LINEITEMS_VIEW
  1009.             orderField = field(2)
  1010.             orderText = "Lineitem for Stock No %1"
  1011.       endcase
  1012.  
  1013.       if ConfirmationMessage("Commit changes?",;
  1014.                               FormatStr(orderText, &orderField)) = YES
  1015.          commit()
  1016.       else
  1017.          rollback()
  1018.          if .not. empty(form.previousRecord) .and. (form.previousRecord > 0) .and.;
  1019.                (form.previousRecord < reccount())
  1020.             form.canNavigate = .F.
  1021.             go form.previousRecord
  1022.             form.canNavigate = CLASS::Form_CanNavigate
  1023.             form.previousRecord = .F.
  1024.          endif
  1025.       endif
  1026.       if inEditMode .and. newInEditMode
  1027.          begintrans()
  1028.       endif
  1029.       form.curPage.changesMade = .F.
  1030.    endif
  1031.    if inEditMode <> newInEditMode
  1032.       if newInEditMode                       && Going to Edit mode
  1033.          begintrans()
  1034.       else                                   && Going to View mode
  1035.          if .not. changesMade
  1036.             rollback()
  1037.          endif
  1038.       endif
  1039.    endif
  1040.  
  1041.  
  1042.    ****************************************************************************
  1043.  
  1044.    procedure ViewEdit
  1045.  
  1046.    * Toggle between View and Edit modes.
  1047.    ****************************************************************************
  1048.    local inEditMode, editMenu, control, editPopupMenu
  1049.  
  1050.    editMenu = form.curPage.menu.viewEdit
  1051.    editPopupMenu = form.editPopup.viewEdit
  1052.  
  1053.    *** If ending edit mode then close transaction, otherwise open it.
  1054.    if form.curPage.inEditMode                     && Switch to View mode
  1055.       form.checkChanged(.F.)
  1056.       editMenu.text = "&Edit"
  1057.       editMenu.shortcut = "Ctrl-E"
  1058.       editMenu.statusMessage = "Edit data."
  1059.       editPopupMenu.text = "&Edit"                && Change popup menu text
  1060.       form.curPage.menu.delete.enabled = .F.      && disabled in view mode
  1061.       CLASS::CheckCommit(.F.)                     && Check transaction
  1062.       form.curPage.inEditMode = .F.               && Change inEditMode
  1063.       CLASS::PrepFormForView()
  1064.    else                                           && Switch to edit mode
  1065.       editMenu.text = "Vi&ew"
  1066.       editMenu.shortcut = "Ctrl-E"
  1067.       editMenu.statusMessage = "View data."
  1068.       editPopupMenu.text = "Vi&ew"                && Change popup menu text
  1069.       form.curPage.menu.delete.enabled = .T.      && enabled in edit mode
  1070.       CLASS::CheckCommit(.T.)                     && Check transaction
  1071.       form.curPage.inEditMode = .T.               && Change inEditMode
  1072.       CLASS::PrepFormForEdit()
  1073.    endif
  1074.    inEditMode = form.curPage.inEditMode    && Faster if we don't reference a form
  1075.    control = form.first                    && variable each time through the loop
  1076.    do
  1077.       if control.pageNo = form.curPage.view
  1078.          do case
  1079.             case control.name $ "CUSTNOENTRY,ORDERNOENTRY,ORDCUSTNOENTRY,TOTINVENTRY,BALDUEENTRY"
  1080.                * these are never editable
  1081.                control.enabled = .F.
  1082.             case .not. control.className $ "BROWSE,EDITOR,PUSHBUTTON,IMAGE,TEXT"
  1083.                control.enabled = inEditMode
  1084.             case control.className = "BROWSE"
  1085.                control.modify = inEditMode
  1086.                control.delete = inEditMode
  1087.                control.append = inEditMode
  1088.          endcase
  1089.       endif
  1090.       control = control.before
  1091.    until control.name = form.first.name
  1092.  
  1093.    if form.curPage.pageNo = CUSTOMER_VIEW
  1094.       form.nameEntry.SetFocus()            && Move to the name entryfield
  1095.    endif
  1096.  
  1097.  
  1098.    ****************************************************************************
  1099.  
  1100.    procedure CheckChanged(callCommit)
  1101.  
  1102.    * Check if changes have been made to the current entryfield.  This procedure
  1103.    * is mostly called from menu routines to make sure form.curPage.changesMade
  1104.    * gets updated when a menu is selected while the changed control has focus.
  1105.    ****************************************************************************
  1106.    private control, fieldValue, controlValue, typeText, typeValue
  1107.  
  1108.    if form.curPage.inEditMode
  1109.       control = form.activeControl
  1110.       if type("control.datalink") <> "U"
  1111.          fieldValue = control.datalink          && name of table field
  1112.  
  1113.          typeText = type("control.text")
  1114.          typeValue = type("control.value")
  1115.          do case
  1116.             case typeValue = "C"
  1117.                controlValue = control.value
  1118.             case typeValue $ "LU" .and. typeText = "C"
  1119.                controlValue = control.text
  1120.             otherwise
  1121.                controlValue = Null
  1122.          endcase
  1123.          if controlValue <> &fieldValue
  1124.             form.curPage.changesMade = .T.
  1125.          endif
  1126.       endif
  1127.    endif
  1128.    if form.curPage.changesMade .and. callCommit
  1129.       CLASS::CheckCommit(form.curPage.inEditMode)     && Check transactions
  1130.    endif
  1131.  
  1132.  
  1133.    ****************************************************************************
  1134.  
  1135.    procedure LineitemBrowseOnNavigate
  1136.  
  1137.    * Calculate total invoice and balance
  1138.    ****************************************************************************
  1139.  
  1140.    if eof()
  1141.       form.curPage.menu.viewEdit.enabled = .F.
  1142.    else
  1143.       form.curPage.menu.viewEdit.enabled = .T.
  1144.       form.balDueEntry.value = total - form.AmtPaidEntry.value
  1145.       show object form.balDueEntry
  1146.    endif
  1147.  
  1148.  
  1149.    ****************************************************************************
  1150.  
  1151.    procedure LineitemBrowseChangesMade
  1152.  
  1153.    * Make sure totals correct when lineitem values change.
  1154.    ****************************************************************************
  1155.    local tempTotal, saveRec
  1156.  
  1157.    form.curPage.changesMade = .T.
  1158.    go recno("LINEITEM") in lineitem     && Make sure change is posted
  1159.    saveRec = recno()
  1160.    calculate all sum(lineitem->sell_price * lineitem->qty) to tempTotal
  1161.  
  1162.    select orders                        && Must do this to register changes
  1163.    replace total with tempTotal         && Calculate new total
  1164.    form.balDueEntry.value = orders->total - orders->amt_paid
  1165.    select lineitem
  1166.    go saveRec in lineitem               && Go back to changed record
  1167.  
  1168.  
  1169.    ****************************************************************************
  1170.  
  1171.    procedure AmtPaidOnChange
  1172.  
  1173.    * Recalculate totals when amtPaid is changed.
  1174.    ****************************************************************************
  1175.  
  1176.    form.curPage.changesMade = .T.
  1177.    form.LineitemBrowseOnNavigate()      && Calculate totals
  1178.  
  1179.  
  1180.    ****************************************************************************
  1181.  
  1182.    procedure PageTabbox_OnSelChange
  1183.  
  1184.    * Set up current page.
  1185.    ****************************************************************************
  1186.  
  1187.    * Don't do anything if click on currently selected tab
  1188.    if this.curSel <> form.curPage.pageNo
  1189.       do case
  1190.          case this.curSel = CUSTOMER_VIEW
  1191.             CLASS::SelectCustomerPage()
  1192.  
  1193.          case this.curSel = ORDERS_VIEW
  1194.             CLASS::SelectOrdersPage()
  1195.  
  1196.          case this.curSel = LINEITEMS_VIEW
  1197.             CLASS::SelectLineitemsPage()
  1198.  
  1199.          otherwise
  1200.             && Only 3 tabs for now
  1201.       endcase
  1202.  
  1203.       form.pageno = this.curSel            && Change page after setup
  1204.  
  1205.       CLASS::SaveFirstLastRecNo()          && Save first/last recs for navigation
  1206.                                            && Always start in non-browse mode
  1207.       form.browseSpeedButton.upBitmap = "Resource #610"
  1208.  
  1209.       if form.curPage.inEditMode           && Change text/statusMessage
  1210.          CLASS::PrepFormForEdit()
  1211.       else
  1212.          CLASS::PrepFormForView()
  1213.       endif
  1214.    endif
  1215.  
  1216.  
  1217.    ****************************************************************************
  1218.  
  1219.    Procedure SEARCHSPEEDBUTTON_OnClick
  1220.  
  1221.    * Call Search.wfm
  1222.    ****************************************************************************
  1223.  
  1224.    form.curPage.menu.search.OnClick()
  1225.  
  1226.  
  1227.    ****************************************************************************
  1228.  
  1229.    Procedure SelectCustomerPage
  1230.  
  1231.    * Set up Customer page.
  1232.    ****************************************************************************
  1233.  
  1234.    CLASS::CheckCommit(.F.)
  1235.    select CUSTOMER
  1236.  
  1237.    form.root.Release()
  1238.    form.menuFile = "Customer.mnu"
  1239.    form.root.customer.separator3.Release()                 && Don't need this menu
  1240.    form.root.customer.current_orders.Release()
  1241.    form.allRect.text = "Customer:"
  1242.  
  1243.    form.browseSpeedButton.visible = .T.
  1244.  
  1245.    if type("form.customerPage") <> "O"
  1246.       form.customerPage = new text(form)
  1247.       form.customerPage.visible = .F.
  1248.       form.customerPage.pageNo = CUSTOMER_VIEW
  1249.       form.customerPage.view = CUSTOMER_VIEW
  1250.       form.customerPage.inEditMode = .F.
  1251.       form.customerPage.changesMade = .F.
  1252.    endif
  1253.    form.customerPage.menu = form.root.customer    && Assign customer menu
  1254.  
  1255.    form.curPage = form.customerPage
  1256.  
  1257.    form.OnNavigate = .F.
  1258.  
  1259.    if form.curPage.inEditMode
  1260.       form.text = "Customers -- Edit Mode"
  1261.       form.editPopup.viewEdit.text = "Vi&ew"
  1262.       form.nameEntry.SetFocus()
  1263.    else
  1264.       form.text = "Customers -- View Mode"
  1265.       form.editPopup.viewEdit.text = "&Edit"
  1266.    endif
  1267.  
  1268.  
  1269.    ****************************************************************************
  1270.  
  1271.    Procedure SelectOrdersPage
  1272.  
  1273.    * Set up Orders page.
  1274.    ****************************************************************************
  1275.  
  1276.    CLASS::CheckCommit(.F.)
  1277.    select ORDERS
  1278.  
  1279.    form.root.Release()
  1280.    form.menuFile = "Orders.mnu"
  1281.    form.root.order.separator3.Release()             && Don't need this here
  1282.    form.root.order.current_customer.Release()
  1283.    form.allRect.text = "Order Info -- " + rtrim(CUSTOMER->NAME)
  1284.  
  1285.    form.browseSpeedButton.visible = .T.
  1286.  
  1287.    if type("form.ordersPage") <> "O"
  1288.       form.ordersPage = new object()
  1289.       form.ordersPage.visible = .F.
  1290.       form.ordersPage.pageNo = ORDERS_VIEW
  1291.       form.ordersPage.view = ORDERS_VIEW
  1292.       form.ordersPage.inEditMode = .F.
  1293.       form.ordersPage.changesMade = .F.
  1294.    endif
  1295.  
  1296.    form.ordersPage.menu = form.root.order
  1297.  
  1298.    form.curPage = form.ordersPage
  1299.  
  1300.    form.OnNavigate = CLASS::OrdersOnNavigate
  1301.    form.OnNavigate()
  1302.  
  1303.    if form.curPage.inEditMode
  1304.       form.text = "Orders -- Edit Mode"
  1305.       form.editPopup.viewEdit.text = "Vi&ew"
  1306.       form.saleDateSpin.SetFocus()
  1307.    else
  1308.       form.text = "Orders -- View Mode"
  1309.       form.editPopup.viewEdit.text = "&Edit"
  1310.    endif
  1311.  
  1312.  
  1313.  
  1314.    ****************************************************************************
  1315.  
  1316.    Procedure SelectLineitemsPage
  1317.  
  1318.    * Set up lineitems page.
  1319.    ****************************************************************************
  1320.  
  1321.    CLASS::CheckCommit(.F.)
  1322.    select LINEITEM
  1323.  
  1324.    form.root.Release()
  1325.    form.menuFile = "Lineitem.mnu"
  1326.    form.allRect.text = "Line Items -- Order #" +;
  1327.                            ORDERS->ORDER_NO +;
  1328.                            ", Customer: " +;
  1329.                            rtrim(CUSTOMER->NAME)
  1330.  
  1331.    form.browseSpeedButton.visible = .F.         && No need to have browse view
  1332.                                                 && for this page.
  1333.    if type("form.lineitemsPage") <> "O"
  1334.       form.lineitemsPage = new object()
  1335.       form.lineitemsPage.visible = .F.
  1336.       form.lineitemsPage.pageNo = LINEITEMS_VIEW
  1337.       form.lineitemsPage.view = LINEITEMS_VIEW
  1338.       form.lineitemsPage.inEditMode = .F.
  1339.       form.lineitemsPage.changesMade = .F.
  1340.    endif
  1341.    form.lineitemsPage.menu = form.root.lineitem
  1342.  
  1343.    form.curPage = form.lineitemsPage
  1344.    form.OnNavigate = .F.
  1345.  
  1346.    if form.curPage.inEditMode
  1347.       form.text = "Lineitems -- Edit Mode"
  1348.       form.editPopup.viewEdit.text = "Vi&ew"
  1349.       form.lineItemsBrowse.SetFocus()
  1350.    else
  1351.       form.text = "Lineitems -- View Mode"
  1352.       form.editPopup.viewEdit.text = "&Edit"
  1353.    endif
  1354.  
  1355.  
  1356.    ****************************************************************************
  1357.  
  1358.    Procedure OrdersOnNavigate
  1359.  
  1360.    * Update controls that are not datalinked
  1361.    ****************************************************************************
  1362.  
  1363.    form.balDueEntry.value = orders->total - form.AmtPaidEntry.value
  1364.  
  1365.  
  1366.    ****************************************************************************
  1367.  
  1368.    Procedure BROWSESPEEDBUTTON_OnClick
  1369.  
  1370.    * Toggle between Detail and Browse views.
  1371.    ****************************************************************************
  1372.  
  1373.    if this.upBitmap = "RESOURCE #610"   && If currently in detail view
  1374.       this.inDetailView = .F.           && Switch to browse from detail view
  1375.       form.pageNo = form.pageNo * 10    && Browse view is on pageNo * 10
  1376.       this.upBitmap = "Resource #613"
  1377.    else
  1378.       this.inDetailView = .T.           && Switch to detail view from browse
  1379.       form.pageNo = form.pageNo / 10    && Detail view is on pageNo / 10
  1380.       this.upBitmap = "Resource #610"
  1381.    endif
  1382.  
  1383.  
  1384.  
  1385.  
  1386.    ****************************************************************************
  1387.  
  1388.    Procedure PrepFormForView
  1389.    ****************************************************************************
  1390.  
  1391.    do case
  1392.       case form.curPage.view = CUSTOMER_VIEW
  1393.          form.text = "Customers -- View Mode"          && change mode to View
  1394.          form.notesEditor.colorNormal = "N/BtnFace"
  1395.          form.notesEditor.modify = .F.
  1396.          form.statusmessage = "In View Mode. " + ;
  1397.                                  "Select Customer - Edit menu to " + ;
  1398.                                  "edit/delete data."
  1399.       case form.curPage.view = ORDERS_VIEW
  1400.          form.text = "Orders -- View Mode"            && change mode to View
  1401.          form.statusMessage = "Select Order - Edit menu choice to " +;
  1402.                                  "edit/delete data."
  1403.  
  1404.       case form.curPage.view = LINEITEMS_VIEW
  1405.          form.text = "Lineitems -- View Mode"         && change mode to View
  1406.          form.statusMessage = "Select Lineitem - Edit menu choice to " +;
  1407.                                  "edit/delete data."
  1408.  
  1409.    endcase
  1410.  
  1411.  
  1412.    ****************************************************************************
  1413.  
  1414.    Procedure SaveFirstLastRecNo
  1415.  
  1416.    * Save first/last recs for navigation warnings when get to these records.
  1417.    ****************************************************************************
  1418.    local curRec
  1419.  
  1420.    curRec = recno()
  1421.    go top
  1422.    form.curPage.firstRec = recno()   && Store first and last records for bound checks
  1423.    go bottom
  1424.    form.curPage.lastRec = recno()
  1425.    if .not. eof() .and. curRec > 0
  1426.       go curRec
  1427.    endif
  1428.  
  1429.  
  1430.    ****************************************************************************
  1431.  
  1432.    Procedure PrepFormForEdit
  1433.    ****************************************************************************
  1434.  
  1435.    do case
  1436.       case form.curPage.view = CUSTOMER_VIEW
  1437.          form.text = "Customers -- Edit Mode"          && change mode to Edit
  1438.          form.notesEditor.modify = .T.
  1439.          form.custNoEntry.enabled = .F.       && Key field is always disabled
  1440.          form.nameEntry.SetFocus()            && Move to the name entryfield
  1441.          form.statusmessage = "In Edit Mode.  " + ;
  1442.                                  "Select Customer - View menu choice" +;
  1443.                                  " to switch to View mode."
  1444.       case form.curPage.view = ORDERS_VIEW
  1445.          form.text = "Orders -- Edit Mode"            && change mode to Edit
  1446.          form.statusMessage = "In Edit Mode.  " +;
  1447.                                  "Select Order - View menu choice" +;
  1448.                                  " to switch to View mode."
  1449.       case form.curPage.view = LINEITEMS_VIEW
  1450.          form.text = "Lineitems -- Edit Mode"         && change mode to Edit
  1451.          form.statusMessage = "In Edit Mode.  " +;
  1452.                                  "Select Lineitem - View menu choice" +;
  1453.                                  " to switch to View mode."
  1454.    endcase
  1455.  
  1456.  
  1457.    ****************************************************************************
  1458.  
  1459.    Procedure VCRFirstButton_OnClick
  1460.    ****************************************************************************
  1461.  
  1462.    if CLASS::IsTableOpen() .and. .not. CLASS::OnFirstRec()
  1463.       form.runCheckCommit = .T.         && Check for active transactions
  1464.       go top
  1465.    endif
  1466.  
  1467.  
  1468.    ****************************************************************************
  1469.  
  1470.    Procedure VCRPrevPageButton_OnClick
  1471.    ****************************************************************************
  1472.  
  1473.    if CLASS::IsTableOpen() .and. .not. CLASS::OnFirstRec()
  1474.       form.runCheckCommit = .T.         && Check for active transactions
  1475.       skip -PAGE_OF_RECORDS
  1476.       CLASS::CheckBOF()
  1477.    endif
  1478.  
  1479.  
  1480.    ****************************************************************************
  1481.  
  1482.    Procedure VCRPrevButton_OnClick
  1483.    ****************************************************************************
  1484.  
  1485.    if CLASS::IsTableOpen() .and. .not. CLASS::OnFirstRec()
  1486.       form.runCheckCommit = .T.         && Check for active transactions
  1487.       skip - 1
  1488.    endif
  1489.  
  1490.  
  1491.    ****************************************************************************
  1492.  
  1493.    Procedure VCRNextButton_OnClick
  1494.    ****************************************************************************
  1495.  
  1496.    if CLASS::IsTableOpen() .and. .not. CLASS::OnLastRec()
  1497.       form.runCheckCommit = .T.         && Check for active transactions
  1498.       skip
  1499.    endif
  1500.  
  1501.  
  1502.    ****************************************************************************
  1503.  
  1504.    Procedure VCRNextPageButton_OnClick
  1505.    ****************************************************************************
  1506.  
  1507.    if CLASS::IsTableOpen() .and. .not. CLASS::OnLastRec()
  1508.       form.runCheckCommit = .T.         && Check for active transactions
  1509.       skip PAGE_OF_RECORDS
  1510.       CLASS::CheckEOF()
  1511.    endif
  1512.  
  1513.  
  1514.    ****************************************************************************
  1515.  
  1516.    Procedure VCRLastButton_OnClick
  1517.    ****************************************************************************
  1518.  
  1519.    if CLASS::IsTableOpen() .and. .not. CLASS::OnLastRec()
  1520.       form.runCheckCommit = .T.         && Check for active transactions
  1521.       go bottom
  1522.    endif
  1523.  
  1524.  
  1525.  
  1526.    ****************************************************************************
  1527.  
  1528.    Function IsTableOpen
  1529.  
  1530.    * Check if a table is open in current workarea.
  1531.    ****************************************************************************
  1532.    private tableOpen
  1533.  
  1534.    if empty(dbf())      && if a table is not open in the current workarea
  1535.       InformationMessage("There is no table open in the current workarea.",;
  1536.          "Info")
  1537.       tableOpen = .F.
  1538.    else
  1539.       tableOpen = .T.
  1540.    endif
  1541.  
  1542.    return tableOpen
  1543.  
  1544.  
  1545.    ****************************************************************************
  1546.  
  1547.    Function OnFirstRec
  1548.  
  1549.    * Check if currently located on first record in current order.
  1550.    ****************************************************************************
  1551.    private firstRec
  1552.  
  1553.    firstRec = .F.
  1554.    if recno() = form.curPage.firstRec
  1555.       go top
  1556.       AlertMessage("At the first record","Alert")
  1557.       firstRec = .T.
  1558.    endif
  1559.  
  1560.    return firstRec
  1561.  
  1562.  
  1563.    ****************************************************************************
  1564.  
  1565.    Function OnLastRec
  1566.  
  1567.    * Check if currently located on last record in current order.
  1568.    ****************************************************************************
  1569.    private lastRec
  1570.  
  1571.    lastRec = .F.
  1572.    if recno() = form.curPage.lastRec
  1573.       go bottom
  1574.       AlertMessage("At the last record","Alert")
  1575.       lastRec = .T.
  1576.    endif
  1577.  
  1578.    return lastRec
  1579.  
  1580.  
  1581.    ****************************************************************************
  1582.  
  1583.    Procedure CheckEOF
  1584.    ****************************************************************************
  1585.  
  1586.    if eof()
  1587.       go bottom
  1588.       AlertMessage("At the last record","Alert")
  1589.    endif
  1590.  
  1591.  
  1592.    ****************************************************************************
  1593.  
  1594.    Procedure CheckBOF
  1595.    ****************************************************************************
  1596.  
  1597.    if bof()
  1598.       go top
  1599.       AlertMessage("At the first record","Alert")
  1600.    endif
  1601.  
  1602.  
  1603. ENDCLASS
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633. *******************************************************************************
  1634. *******************************************************************************
  1635. CLASS BubbleClass(f, name, btop, bleft, bheight, bwidth) of Shape(f, name)
  1636.  
  1637. * Defines Bubbles floating around bottom of form
  1638. *******************************************************************************
  1639.    private highlightName
  1640.  
  1641.    this.ColorNormal = "w+/BtnFace"
  1642.    this.Left = bleft
  1643.    this.Top = btop
  1644.    this.Height = bheight
  1645.    this.Width = bwidth
  1646.    this.PageNo = 0
  1647.    this.PenWidth = 1
  1648.  
  1649.    highlightName = "Highlight" + name
  1650.    define shape &highlightName of f;
  1651.        PROPERTY;
  1652.          Top btop + .15*bheight,;
  1653.          Left bleft + bwidth/3.1,;
  1654.          Height 0.1775,;
  1655.          Width 2.83,;
  1656.          ColorNormal "w+/BtnFace",;
  1657.          PageNo 0,;
  1658.          PenWidth 1
  1659.  
  1660. ENDCLASS
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.